package com.atguigu.srb.core.service;

import com.atguigu.srb.core.pojo.entity.LendReturn;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 还款记录表 服务类
 * </p>
 *
 * @author Bright
 * @since 2022-04-09
 */
public interface LendReturnService extends IService<LendReturn> {

    List<LendReturn> listByLendId(Long lendId);

    /**
     * 提交还款申请
     * 1.判断用户信息是否正确
     * 2.判断还款计划状态
     * 3.判断账号金额是否够用
     * 4.判断之前的还款计划是否都还完了
     * 5.组装请求参数(创建回款明细)
     * 6.返回form表单
     *
     * @param userId       用户ID
     * @param lendReturnId 还款计划id
     * @return
     */
    String commitReturn(Long lendReturnId,
                        Long userId);

    /**
     * 还款异步回调
     * 1.幂等性判断
     * 2.根据还款批次号查询计划项
     * 3.扣除借款人账号金额
     * 4.生成借款流水
     * 5.判断是否最后一次还款(是：修改标的状态为已结清)
     * 6.更新还款计划(真实还款日期,是否预期,状态)
     * 7.获得相应的回款计划列表(循环列表)
     * 8.投资人账户回款
     * 9.生成回款流水
     * 10.判断是否为最后一次还款(是：修改投资项为已结清)
     * 11.判断是否预期
     * 12.更新回款计划
     *
     * @param paramMap 回调参数
     * @return 放回结果
     */
    String notifyReturn(Map<String, Object> paramMap);
}
